package QianFeng07.IODemo2;

import java.io.IOException;
import java.io.RandomAccessFile;

/**
 * RandomAccessFile
 * RandomAccessFile是IO包的类，从Object直接继承而来。只可以对文件进行操作，可以对文件进行读取和写入。
 * 当模式为r时，当文件不存在时会报异常；当模式为rw时，当文件不存在时，会自己动创建文件，
 * 当文件已经存在时不会对原有文件进行覆盖。
 * RandomAccessFile有强大的文件读写功能，其内部是大型byte[],I可以通过seek(),getFilePointer()等方法操作的
 * 指针，方便对数据进行写入与读取。还可以对基本数据类型进行直接的读和写操作。
 * RandomAccessFile的绝大多数功能，已经被JDK 1.4的nio的“内存映射文件(memory-mapped files)'给取代了，你该考
 * 虑一下是不是用“内存映射文件”来代替RandomAccessFile了。
 **/
public class RandomAccessFileDemo {
    public static void main(String[] args) {
        try {
            //读取文件
            RandomAccessFile r = new RandomAccessFile("F:\\Test\\my\\1.jpg", "r");
            //写入文件
            RandomAccessFile w = new RandomAccessFile("F:\\Test\\my\\2.jpg", "rw");

            byte[] bytes = new byte[1024];
            int len = -1;
            while ((len = r.read(bytes)) != -1) {
                w.write(bytes, 0, len);
            }
            w.close();
            r.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        System.out.println("copy success");

    }
}
